﻿using DroidClaim.BL.Dto;
using DroidClaimBL.Dto;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;

namespace DroidClaim.BL
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IDroidClaimBL" in both code and config file together.
    [ServiceContract]
    public interface IDroidClaimBL
    {
        [OperationContract]
        [WebInvoke(Method = "POST",
          ResponseFormat = WebMessageFormat.Json,
          RequestFormat = WebMessageFormat.Json,
          BodyStyle = WebMessageBodyStyle.Bare)]
        ResultBlDto RegisterCustomer(RegisterCustomerBlDto customerDto);

        [OperationContract]
        [WebInvoke(Method = "POST",
          ResponseFormat = WebMessageFormat.Json,
          RequestFormat = WebMessageFormat.Json,
          BodyStyle = WebMessageBodyStyle.Bare)]
        ResultBlDto RegisterSurveyor(RegisterSurveyorBlDto surveyorDto);

        [OperationContract]
        [WebInvoke(Method = "POST",
          ResponseFormat = WebMessageFormat.Json,
          RequestFormat = WebMessageFormat.Json,
          BodyStyle = WebMessageBodyStyle.Bare)]
        AuthenCustomerResultBlDto AuthenCustomer(AuthenCustomerBlDto authenCustomer);

        [OperationContract]
        [WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
        ClaimRequestResultBlDto AddClaimRequest(ClaimRequestBlDto claimRequest);

        [OperationContract]
        [WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
        AllClaimInfoForCustomerResultBlDto GetAllClaimInfoForCustomer(SessionPkBlDto sessionPk);

        [OperationContract]
        [WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
        ClaimInfoForCustomerResultBlDto GetClaimInfoForCustomer(ClaimInfoPKBlDto claimInfoPK);

        [OperationContract]
        [WebInvoke(Method = "POST", 
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
        bool Logout(SessionPkBlDto SessionPk);

        [OperationContract]
        [WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
        AuthenSurveyorResultBlDto AuthenSurveyor(AuthenSurveyorBlDto authenSurveyor);

        [OperationContract]
        [WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
        UpdateSurveyorStatusResultBlDto UpdateSurveyorStatus(SurveyorStatusBlDto status);

        [OperationContract]
        [WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
        UpdateSurveyorLocationResultBlDto UpdateSurveyorLocation(SurveyorLocationBlDto status);

        [OperationContract]
        [WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
        SurveyorLocationResultBlDto GetSurveyorLocation(ClaimInfoPKBlDto cliamInfoPk);

        [OperationContract]
        [WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
        ClaimInfoForSurveyorResultBlDto GetClaimInfoForSurveyor(ClaimInfoPKBlDto cliamInfoPk);

        [OperationContract]
        [WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
        DenyMessageResultBlDto SendDenyMessage(DenyMessageBlDto denyMessage);

        [OperationContract]
        [WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
        AcceptMessageResultBlDto SendAcceptMessage(AcceptMessageBlDto acceptMessage);

        [OperationContract]
        [WebInvoke(Method = "POST",
           ResponseFormat = WebMessageFormat.Json,
           RequestFormat = WebMessageFormat.Json,
           BodyStyle = WebMessageBodyStyle.Bare)]
        ClaimIdResultBlDto UpdateClaim(UpdateClaimInfoBlDto updateClaimInfo);

        [OperationContract]
        [WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json)]
        CustomerBlDto GetCustomer();
    }
}
